MVC (Model-View-Controller) একটি সফটওয়্যার আর্কিটেকচারাল প্যাটার্ন, যা ওয়েব অ্যাপ্লিকেশন বা সফটওয়্যার ডেভেলপমেন্টে জনপ্রিয়ভাবে ব্যবহৃত হয়। এটি অ্যাপ্লিকেশনের ডাটা (Model), ব্যবহারকারীর ইন্টারফেস (View), এবং ব্যবহারকারীর ইন্টারঅ্যাকশন (Controller) এর মধ্যে আলাদা আলাদা দায়িত্ব নির্ধারণ করে, যাতে কোডের পুনঃব্যবহারযোগ্যতা, রক্ষণাবেক্ষণ এবং স্কেলেবিলিটি বৃদ্ধি পায়।
এটি তিনটি গুরুত্বপূর্ণ অংশে বিভক্ত:
- Model: ডেটা এবং ব্যবসায়িক লজিকের প্রতিনিধিত্ব।
- View: ইউজার ইন্টারফেস বা আউটপুট, যা ব্যবহারকারী দেখে।
- Controller: ইউজারের ইনপুট গ্রহণ করে, তাকে সঠিকভাবে প্রক্রিয়া করে এবং উপযুক্ত Model এবং View এর সাথে যোগাযোগ করে।
১. Model (ডেটা এবং ব্যবসায়িক লজিক)
Model হল অ্যাপ্লিকেশনের ডেটা এবং ব্যবসায়িক লজিকের প্রতিনিধিত্বকারী অংশ। এটি অ্যাপ্লিকেশনের ডেটার স্টোরেজ এবং প্রসেসিংয়ের জন্য দায়ী। Model এ থাকে ডেটা ম্যানিপুলেশন (যেমন ডেটাবেস থেকে তথ্য নেওয়া, সংরক্ষণ করা) এবং অন্যান্য ব্যবসায়িক লজিক।
Model এর ভূমিকা:
- ডেটা ম্যানেজমেন্ট: ডেটাবেস, ফাইল সিস্টেম বা API এর মাধ্যমে ডেটা সংগ্রহ এবং সংরক্ষণ।
- ব্যবসায়িক লজিক: অ্যাপ্লিকেশনের মধ্যে সকল প্রকার লজিকাল ক্যালকুলেশন বা অ্যাকশন পরিচালনা করা।
- ডেটা ভ্যালিডেশন: ডেটার ভ্যালিডেশন এবং সঠিকতা নিশ্চিত করা।
উদাহরণ:
ধরা যাক, একটি ওয়েব অ্যাপ্লিকেশনে একটি User মডেল রয়েছে, যেটি ডাটাবেসে ইউজার সম্পর্কিত তথ্য সংরক্ষণ করে এবং ইউজারের তথ্য যাচাই করে।
class User
def initialize(name, age)
@name = name
@age = age
end
def save
# Save user data to the database
end
def validate
# Validate data before saving
end
end২. View (ইউজার ইন্টারফেস)
View হল অ্যাপ্লিকেশনের ব্যবহারকারী ইন্টারফেস (UI)। এটি ব্যবহারকারীকে অ্যাপ্লিকেশনের আউটপুট বা ডেটা প্রদর্শন করে এবং ব্যবহারকারীর সাথে ইন্টারঅ্যাকশন (যেমন ক্লিক, ইনপুট) করার জন্য রেন্ডারিং ব্যবস্থা করে।
View এর ভূমিকা:
- ইউজার ইন্টারফেস: ব্যবহারকারীকে অ্যাপ্লিকেশনটি কীভাবে দেখতে হবে তা পরিচালনা করা।
- ডেটা প্রদর্শন: Model থেকে ডেটা নিয়ে তা সঠিকভাবে উপস্থাপন করা।
- ব্যবহারকারী ইন্টারঅ্যাকশন: ব্যবহারকারীর কার্যকলাপ (যেমন ফর্ম সাবমিট, বাটন ক্লিক) রেন্ডার এবং হ্যান্ডল করা।
উদাহরণ:
একটি ওয়েব অ্যাপ্লিকেশনে HTML, CSS, এবং JavaScript ব্যবহার করে View তৈরি করা হয়:
<!DOCTYPE html>
<html>
<head>
<title>User Profile</title>
</head>
<body>
<h1>Welcome, <%= @user.name %></h1>
<p>Age: <%= @user.age %></p>
</body>
</html>এখানে, @user হল একটি Model অবজেক্ট এবং View এর মধ্যে Dynamic Data রেন্ডার করা হচ্ছে।
৩. Controller (ব্যবহারকারী ইন্টারঅ্যাকশন পরিচালনা)
Controller হল অ্যাপ্লিকেশনের অন্তরালে ব্যবহৃত লজিক যা ইউজারের ইনপুট গ্রহণ করে এবং সেই ইনপুট অনুযায়ী অ্যাপ্লিকেশনের Model এবং View এর সাথে যোগাযোগ করে। Controller অ্যাপ্লিকেশনের বিভিন্ন অংশকে সমন্বয় (coordinate) করে, ইউজারের অনুরোধ অনুযায়ী সঠিক উপস্থাপনা এবং ডেটা ম্যানিপুলেশন নিশ্চিত করে।
Controller এর ভূমিকা:
- ইউজারের ইনপুট গ্রহণ: ইউজারের কার্যকলাপ (যেমন ফর্ম সাবমিট, URL ক্লিক) গ্রহণ করা।
- লজিক প্রক্রিয়া: ইউজারের ইনপুট অনুযায়ী অ্যাপ্লিকেশনের লজিক পরিচালনা করা (যেমন ডেটা ভ্যালিডেশন, রাউটিং)।
- Model এবং View এর মধ্যে সমন্বয়: Model থেকে ডেটা নিয়ে তা View-এ প্রেরণ করা।
উদাহরণ:
রুবিতে Rails ফ্রেমওয়ার্কে একটি Controller সাধারণত এইভাবে তৈরি করা হয়:
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
endএখানে, show অ্যাকশন Model থেকে User ডেটা খুঁজে বের করে এবং তা View তে প্রেরণ করে, যা ব্যবহারকারীর স্ক্রীনে রেন্ডার হবে।
MVC প্যাটার্নের সুবিধা
- Separation of Concerns (SoC): MVC প্যাটার্নের মাধ্যমে ডেটা (Model), ইউজার ইন্টারফেস (View), এবং লজিক (Controller) আলাদা করা হয়, যা কোডের রক্ষণাবেক্ষণ এবং স্কেলেবিলিটি উন্নত করে।
- Code Reusability: Model একবার তৈরি হলে তা বিভিন্ন অংশে পুনঃব্যবহার করা যায়, ফলে কোড পুনঃব্যবহারযোগ্য হয়ে ওঠে।
- Easier Maintenance: কোডের পৃথক অংশগুলো আলাদা থাকার কারণে, একটি নির্দিষ্ট অংশে কোনো সমস্যা হলে তা দ্রুত সমাধান করা যায়। যেমন, ইউজার ইন্টারফেসের পরিবর্তন Controller বা Model এর ওপর কোনো প্রভাব ফেলবে না।
- Scalability: যেহেতু MVC কোডকে পৃথক অংশে বিভক্ত করে, অ্যাপ্লিকেশনটির পরবর্তীতে স্কেল করা সহজ হয়।
- Testing: আলাদা আলাদা অংশে কোড লেখা থাকলে, একে একে Model, View, এবং Controller এর পরীক্ষা করা সহজ হয়।
সারসংক্ষেপ
MVC (Model-View-Controller) প্যাটার্নের মাধ্যমে সফটওয়্যার ডেভেলপমেন্টে ডেটা, ইন্টারফেস, এবং লজিকের মধ্যে স্পষ্ট বিভাজন তৈরি করা হয়। এর মাধ্যমে কোডের maintenance সহজ হয়, scalability বৃদ্ধি পায় এবং code reusability নিশ্চিত হয়। এই প্যাটার্ন ওয়েব অ্যাপ্লিকেশন, ডেস্কটপ অ্যাপ্লিকেশন, এবং মোবাইল অ্যাপ্লিকেশনগুলোতে সঠিকভাবে কার্যকরী এবং রক্ষণাবেক্ষণের জন্য খুবই কার্যকর।
Read more